/**
 * <copyright>
 * </copyright>
 *
 */
package lco.cRLanguage;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>For Java</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link lco.cRLanguage.ForJava#getInitialization <em>Initialization</em>}</li>
 *   <li>{@link lco.cRLanguage.ForJava#getAssignment <em>Assignment</em>}</li>
 *   <li>{@link lco.cRLanguage.ForJava#getCondition <em>Condition</em>}</li>
 *   <li>{@link lco.cRLanguage.ForJava#getComparison <em>Comparison</em>}</li>
 *   <li>{@link lco.cRLanguage.ForJava#getExpression <em>Expression</em>}</li>
 *   <li>{@link lco.cRLanguage.ForJava#getVariable <em>Variable</em>}</li>
 *   <li>{@link lco.cRLanguage.ForJava#getOperation <em>Operation</em>}</li>
 *   <li>{@link lco.cRLanguage.ForJava#getStep <em>Step</em>}</li>
 *   <li>{@link lco.cRLanguage.ForJava#getStatements <em>Statements</em>}</li>
 * </ul>
 * </p>
 *
 * @see lco.cRLanguage.CRLanguagePackage#getForJava()
 * @model
 * @generated
 */
public interface ForJava extends EObject
{
  /**
   * Returns the value of the '<em><b>Initialization</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Initialization</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Initialization</em>' reference.
   * @see #setInitialization(Variable)
   * @see lco.cRLanguage.CRLanguagePackage#getForJava_Initialization()
   * @model
   * @generated
   */
  Variable getInitialization();

  /**
   * Sets the value of the '{@link lco.cRLanguage.ForJava#getInitialization <em>Initialization</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Initialization</em>' reference.
   * @see #getInitialization()
   * @generated
   */
  void setInitialization(Variable value);

  /**
   * Returns the value of the '<em><b>Assignment</b></em>' containment reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Assignment</em>' containment reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Assignment</em>' containment reference.
   * @see #setAssignment(AssignmentRightHand)
   * @see lco.cRLanguage.CRLanguagePackage#getForJava_Assignment()
   * @model containment="true"
   * @generated
   */
  AssignmentRightHand getAssignment();

  /**
   * Sets the value of the '{@link lco.cRLanguage.ForJava#getAssignment <em>Assignment</em>}' containment reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Assignment</em>' containment reference.
   * @see #getAssignment()
   * @generated
   */
  void setAssignment(AssignmentRightHand value);

  /**
   * Returns the value of the '<em><b>Condition</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Condition</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Condition</em>' reference.
   * @see #setCondition(Variable)
   * @see lco.cRLanguage.CRLanguagePackage#getForJava_Condition()
   * @model
   * @generated
   */
  Variable getCondition();

  /**
   * Sets the value of the '{@link lco.cRLanguage.ForJava#getCondition <em>Condition</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Condition</em>' reference.
   * @see #getCondition()
   * @generated
   */
  void setCondition(Variable value);

  /**
   * Returns the value of the '<em><b>Comparison</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Comparison</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Comparison</em>' attribute.
   * @see #setComparison(String)
   * @see lco.cRLanguage.CRLanguagePackage#getForJava_Comparison()
   * @model
   * @generated
   */
  String getComparison();

  /**
   * Sets the value of the '{@link lco.cRLanguage.ForJava#getComparison <em>Comparison</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Comparison</em>' attribute.
   * @see #getComparison()
   * @generated
   */
  void setComparison(String value);

  /**
   * Returns the value of the '<em><b>Expression</b></em>' containment reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Expression</em>' containment reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Expression</em>' containment reference.
   * @see #setExpression(NumericFunctionExpression)
   * @see lco.cRLanguage.CRLanguagePackage#getForJava_Expression()
   * @model containment="true"
   * @generated
   */
  NumericFunctionExpression getExpression();

  /**
   * Sets the value of the '{@link lco.cRLanguage.ForJava#getExpression <em>Expression</em>}' containment reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Expression</em>' containment reference.
   * @see #getExpression()
   * @generated
   */
  void setExpression(NumericFunctionExpression value);

  /**
   * Returns the value of the '<em><b>Variable</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Variable</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Variable</em>' reference.
   * @see #setVariable(Variable)
   * @see lco.cRLanguage.CRLanguagePackage#getForJava_Variable()
   * @model
   * @generated
   */
  Variable getVariable();

  /**
   * Sets the value of the '{@link lco.cRLanguage.ForJava#getVariable <em>Variable</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Variable</em>' reference.
   * @see #getVariable()
   * @generated
   */
  void setVariable(Variable value);

  /**
   * Returns the value of the '<em><b>Operation</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Operation</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Operation</em>' attribute.
   * @see #setOperation(String)
   * @see lco.cRLanguage.CRLanguagePackage#getForJava_Operation()
   * @model
   * @generated
   */
  String getOperation();

  /**
   * Sets the value of the '{@link lco.cRLanguage.ForJava#getOperation <em>Operation</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Operation</em>' attribute.
   * @see #getOperation()
   * @generated
   */
  void setOperation(String value);

  /**
   * Returns the value of the '<em><b>Step</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Step</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Step</em>' attribute.
   * @see #setStep(int)
   * @see lco.cRLanguage.CRLanguagePackage#getForJava_Step()
   * @model
   * @generated
   */
  int getStep();

  /**
   * Sets the value of the '{@link lco.cRLanguage.ForJava#getStep <em>Step</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Step</em>' attribute.
   * @see #getStep()
   * @generated
   */
  void setStep(int value);

  /**
   * Returns the value of the '<em><b>Statements</b></em>' containment reference list.
   * The list contents are of type {@link lco.cRLanguage.Statement}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Statements</em>' containment reference list isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Statements</em>' containment reference list.
   * @see lco.cRLanguage.CRLanguagePackage#getForJava_Statements()
   * @model containment="true"
   * @generated
   */
  EList<Statement> getStatements();

} // ForJava
